#ifndef __ALTERNED_ALLOC_DISTRIBUTION__
#define __ALTERNED_ALLOC_DISTRIBUTION__



#include <boost/random/uniform_int.hpp>
#include "generateurs.hpp"
#include "SourceBinaire.hpp"

/*
 *Une distribution des blocs de la forme : 
 *{petit,gros---petit,gros---petit,gros} : 
 *{petit,petit,petit---gros,gros,gros}   : 
 *{gros,gros,gros---petit,petit,petit}   :
 *{petit,gros,gros---petit,gros,gros}    :
 */

#include "IAllocDistribution.hpp"
class AlternedAllocDistribution : public virtual IAllocDistribution
{
  
public:
  AlternedAllocDistribution(float p):IAllocDistribution()
  {
    printf("Alterned alloc distrib\n");  
    assert(p<= 1);
    this->ordre = ordre;
    this->blocPetit =4;
    this->blocGrand =512;
    this->b = new Bernouillie(p);
  };
  
  ~AlternedAllocDistribution()
  {
    delete b;
  }
  virtual void genererBloc(unsigned int id);
  virtual void initGenerateur();
  virtual void finitGenerateur();
  
private:
  int blocPetit ;
  int blocGrand ;
  int ordre;
  SourceBinaire * b;
};

#endif
